Revision: awiki--devo--1.0--patch-91
Archive: lord@emf.net--awiki-2004
Creator: Tom Lord <lord@emf.net>
Date: Fri Oct 22 08:37:30 PDT 2004
Standard-date: 2004-10-22 15:37:30 GMT
New-directories: awpage/UNPLUGGED/.arch-ids
Removed-files: libawiki/displays.c libawiki/displays.h
    libawiki/headers.c libawiki/headers.h libawiki/html.c
    libawiki/html.h libawiki/node.c libawiki/node.h
    libawiki/paper.c libawiki/paper.h libawiki/paragraphs.c
    libawiki/paragraphs.h libawiki/scan.c libawiki/scan.h
    libawiki/sections.c libawiki/sections.h
    libawiki/styled.c libawiki/styled.h libawiki/textburst.c
    libawiki/textburst.h libawiki/tty.c libawiki/tty.h
    libawiki/unrecognized.c libawiki/unrecognized.h
Removed-directories: awpage/PLUGIN/.arch-ids
Renamed-files: awpage/PLUGIN/.arch-ids/=id awpage/UNPLUGGED/.arch-ids/=id
    awpage/PLUGIN/.arch-ids/REQ.id awpage/UNPLUGGED/.arch-ids/REQ.id
Renamed-directories: awpage/PLUGIN awpage/UNPLUGGED
Modified-files: libawiki/awiki.c libawiki/awiki.h
New-patches: lord@emf.net--awiki-2004/awiki--devo--1.0--patch-91
Summary: begin massive cleanup
Keywords: 


In the code so far, "nodes" are a peculiar data structure:  at heart,
they are a simple tree where each node of the tree is decorated with a
"type" label, a set of (string-based) key/value pairs called "fields",
and a set of subnodes.

In practice, that simple and generic data structure was implemented
with extra features that aren't supported by the simple abstraction.
For example, internally, node types were represented not simply as
strings, but as a 'struct awiki_node_type' structure containing, for
example, a function pointer for a "shallow parser" (whatever that
might be).

In addition to the implementation of nodes being far to complex,
the APIs to various functions had become inconsistent.  For example,
some functions expected source position arguments to be passed by
reference (even when used only for value) while others expected 
positions to be passed by value.

Finally, error handling had gotten sloppy in several places, in part
because it was taking too much code to implement simple things (a
result of the strange and needless complexity added to the data
structure for nodes).

I'm beginning a brutal pass over the code, simplifying the node data
structure to its bare essense, then rebuilding the parser and
formatter on that.


